/**
 *  Copyright 2016年12月12日 北京福富软件技术股份有限公司
 *  All Rights Reserved.
 *  文件名称: WebSocketHandshakeInterceptor  
 *  初始作者：g.huangshg
 *  初始版本：V1.0.0   
 *  完成日期： 2016年12月12日 
 */
package com.controller;

import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.HandshakeInterceptor;

import javax.servlet.http.HttpSession;
import java.util.Map;

/********************************************************
 * 类名：WebSocketHandshakeInterceptor
 * 功能：
 * 作者：g.huangshg 2016年12月12日
 * 修改记录：
 *      日期              修改人              修改说明
 ********************************************************/
public class WebSocketHandshakeInterceptor implements HandshakeInterceptor {

    @Override
    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object
                > attributes)  {
        if (request instanceof ServletServerHttpRequest) {
         //   LogUtil.info("握手前=========>");
            ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
            HttpSession session = servletRequest.getServletRequest().getSession(false);
            if (session != null) {
                String sessionId=session.getId();
              //  LogUtil.info("sessionId=========> "+session.getId());

                attributes.put("WEBSOCKET_USERNAME",sessionId);
            }
        }
        return true;
    }

    @Override
    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
       // LogUtil.info("=========>握手后");//调用afterConnectionEstablished
    }
}
